from goods.models import GoodsChannel


def get_categories():
    # 1.1查询所有频道并排序
    channels = GoodsChannel.objects.order_by('group_id', 'sequence') #此处ｉｄ也可以
    # 1.2遍历，转换频道结构
    catetories = {}
    for channel in channels:
        # categories[1]={手机}
        # categories[1]={相机}
        # 1.3判断此频道是否已经存在，如果不存在则新建字典
        if channel.group_id not in catetories:
            catetories[channel.group_id] = {
                'channels': [],  # 一级分类列表
                'sub_cats': []  # 二级分类列表
            }  #可以把次{}看做一个字典
        # 1.4获取当前频道
        channel_dict = catetories[channel.group_id]
        # 1.5向一级分类中添加数据
        channel_dict['channels'].append({
            'name': channel.category.name,
            'url': channel.url
        })
        '''
        categories={
            1:{
                'channels':[{手机},{相机},{数码}],
                'sub_cats':[]
            },
            2:{
                'channels':[{电脑},{办公}],
                'sub_cats':[]
            },
            3:{
                'channels':[],
                'sub_cats':[]
            }
        }
        '''
        # 1.6向二级分类中添加数据
        for cat2 in channel.category.subs.all():
            channel_dict['sub_cats'].append({
                'name': cat2.name,
                # 1.7添加三级分类
                'sub_cats': cat2.subs.all()
            })

    return catetories
